package com.situ.user.config;

import java.io.File;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.situ.user.service.PicService;

//Spring 自带的定时任务
@Component
@EnableScheduling // 这是一个定时的任务的类
public class CleanPicTask {

	// 从配置文件中读取信息
	@Value("${spring.servlet.multipart.location}")
	private String path;

	@Autowired
	private PicService picService;

	// 清理无用的图片
	@Scheduled(cron = "40 52 14 * * ?") // 定义一个方法作为定时任务
	// cron 设置一个表达式 ，指定任务在什么时间执行
	// 秒 分 时 日 月 周 年、
	// *
	public void cleanPic() {
		System.err.println("定时清理图片" + new Date());

		// 1找到、要清理的图片在哪
		File picDir = new File(path);
		File[] pics = picDir.listFiles();

		// 查询当前系统下的可用图片
		List<String> picList = picService.getAll();
		// 遍历图片 检差是否需要清理
		for (File pic : pics) {
			if (pic.isFile()) {
				String picName = pic.getName();
				// 查询判断 是否需要清理
				if (!picList.contains(picName)) {
					// 删除该文件
					pic.delete();
				}
			}

		}

	}

	@Scheduled(fixedDelay = 24 * 60 * 60 * 1000)
	// 设定定时任务的固定时间间隔
	// 单位是毫秒
	// 当项目刚启动时 第一次执行，之后每个指定的时间间隔再执行
	public void name() {
		System.err.println("定时任务" + new Date());
	}

}
